/*================================================================================
* CopyRight(c)2008, www.k-zone.cn. All rights reserved.
* Code licensed under the BSD License
* Author: Kenshin, Email: fxblog@gmail.com, Blog: http://www.k-zone.cn/zblog/
* Version：v0.1
* Data：2008-2-1
*===============================================================================*/
package com.ken.fanfou.as3.statuses
{
	import com.ken.fanfou.as3.Common;
	import com.ken.fanfou.as3.FanFouEvent;
	import com.ken.fanfou.as3.FanFouMethod;
	import com.ken.fanfou.as3.Type;
	
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;

	public class UserTimeLine extends FanFouMethod
	{		
		public function UserTimeLine(value:String,isValidate:Boolean){
			super();
			_url = value;
			_isValidate = isValidate;
		}
		
		/** 
		* 重写FanFouMethod，使其具有详细方法，而方法是针对与user_timeline而写。
		* 显示用户的消息
		* _isValidate = true时，需要身份验证，因此不需要使用ID
		* _isValidate = false时，不需要身份验证，因此需要使用ID，例如Common.ID = Kenshin.L
		* 
		* @param 饭否默认显示的xml条数、默认是20条
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function Loader(count:int = 20):void{
			if(_isValidate) _url += Type.FANFOU_COUNT + count;
			else _url += Type.FANFOU_ID + Common.UID + Type.FANFOU_COUNT2 + count;
			var request:URLRequest = new URLRequest(_url);
			var loader:URLLoader = new URLLoader();
			loader.load(request);
			loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
			loader.addEventListener(Event.COMPLETE,completeHandler);
		}
		
		/** 
		* 私有方法，如果urlloader出错，则执行这个方法
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function errorHandler(event:IOErrorEvent):void{
			trace(111111)
		}

		/** 
		* 私有方法，如果读取正确出错，则执行这个方法。并且dispatchEvent一个事件，已被客户端监听。
		* 其中_xml是它的父类FanFouMethod的方法。 
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function completeHandler(event:Event):void{
			_xml = new XML(event.target.data);
			dispatchEvent(new FanFouEvent(FanFouEvent.COMPLETE));
		}
		
		/** 
		* 重写GetXml，将得到的内容→xml中
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function GetXml():XML{
			return _xml;
		}
		
		/**------------------------------------ user_timeline.xml的属性 ------------------------------------*/
		/** 
		* user_timeline返回的XML数组：rss.channel.item的长度
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function get XmlLength():uint{
			return _xml.channel.item.length();
		}

		/** 
		* user_timeline返回的XML数组：rss.channel.item中的内容
		* 包括：title、description、pubDate、guid、link
		* 
		* @return Array（例如arrary({title:Kenshin,description:Kenshin：超越自我就必须忘记自我!,pubDate:Mon, 03 Dec 2007 04:27:36 +0000,guid:http://fanfou.com/statuses/NQ5Q33PKiKI,link:http://fanfou.com/statuses/NQ5Q33PKiKI})）
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		* 返回的XML、例如：
    	*<item>
    	*  <title>Kenshin：ssss</title>
    	*  <description><![CDATA[Kenshin：ssss]]></description>
    	*  <pubDate>Fri, 01 Feb 2008 13:02:22 +0000</pubDate>
    	*  <guid>http://fanfou.com/statuses/lFVQ5pGp5LQ</guid>
    	*  <link>http://fanfou.com/statuses/lFVQ5pGp5LQ</link>
    	*</item>
		*/
		public override function get XmlContent():Array{
			for(var i:uint = 0;i < _xml.channel.item.length();i++ ){
				_array.push({title:_xml.channel.item[i].title,
				             description:_xml.channel.item[i].description,
				             pubDate:_xml.channel.item[i].pubDate,
				             guid:_xml.channel.item[i].guid,
				             link:_xml.channel.item[i].link
				         });
			}
			return _array;
		}
	}
}